﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using CAD.BLL;
using CAD.DTO;

namespace WFASmartketing.PRESENTACION_TESORERIA
{
    public partial class RetiroBancario : Form
    {
        private FrmPrincipal principal;
        public RetiroBancario(FrmPrincipal principal)
        {
            InitializeComponent();
            this.principal = principal;
            cbxbanco.DropDownStyle = ComboBoxStyle.DropDownList;
            cbxcuenta.DropDownStyle = ComboBoxStyle.DropDownList;
            cargarBanco();
            try
            {
                int cuentabanco = (int)cbxbanco.SelectedValue;
                cargarCuentaBanco(cuentabanco);
            }
            catch (Exception)
            {
                MessageBox.Show(this, "No Existen Algunos Datos", "ADVERTENCIA");
                return;
            }
        }

        private void RetiroBancario_Load(object sender, EventArgs e)
        {
            this.vendedor_selectAllTableAdapter.Fill(this.vendedorDS.vendedor_selectAll);
        }
        private void imprimirComprobante(int pkCompra)
        {
            MessageBoxButtons buttons = MessageBoxButtons.YesNo;
            DialogResult result;
            result = MessageBox.Show(this, "Desea Imprimir el comprobante", "REGISTRO DE DATOS", buttons);
            if (result == DialogResult.Yes)
            {
                REPORTES.ComprobanteRetiroBancoWF compra = new REPORTES.ComprobanteRetiroBancoWF(pkCompra);
                compra.MdiParent = principal;
                compra.Show();
                return;
            }
        }
        private void button3_Click(object sender, EventArgs e)
        {
            double monto = 0;
            try
            {
                monto = Convert.ToDouble(txtmonto.Text);
            }
            catch (Exception ex)
            {
                MessageBox.Show(this, "Debe ingresar un monto a pagar", "ERROR");
                return;
            }
            if (monto <= 0)
            {
                MessageBox.Show(this, "Monto a pagar debe ser mayor al 0", "ERROR");
                return;
            }
            DateTime fecha = dtcfecha.Value;
            int idcuenta = 0;
            try
            {
                idcuenta = (int)cbxcuenta.SelectedValue;
            }
            catch (Exception)
            {
                MessageBox.Show(this, "No Existen Algunos Datos", "ADVERTENCIA");
                return;
            }
            string responsable = cbxvendedor.Text.ToString();
            string observacion = txtobservacion.Text;
            string nrorecibo = txtnrorecibo.Text;
            try
            {
                cuentaBanco cuenta = cuentabancoBLL.SelectByID(idcuenta);
                double montoActual1 = cuenta.Monto - monto;
                cuentabancoBLL.updatemonto(cuenta.Id, montoActual1);
                int nroRetiro = retiroBancoBLL.insertar(idcuenta, principal.ObtenerLogueado().Id, DateTime.Now, fecha, responsable, nrorecibo, monto, observacion);
                MessageBox.Show(this, "Se registro el retiro correctamente, Nro retiro: " + nroRetiro, "RETIRO");
                limpiar();
                imprimirComprobante(nroRetiro);
            }
            catch (Exception ex)
            {
                MessageBox.Show(this, "No se registro el retiro", "ERROR");
            }
        }
        private void cargarBanco()
        {
            List<banco> listacajas = bancoBLL.SelectAll();
            cbxbanco.DataSource = listacajas;
            cbxbanco.DisplayMember = "Nombre";
            cbxbanco.ValueMember = "Id";
        }
        private void cargarCuentaBanco(int idbanco)
        {
            List<cuentaBanco> listacajas = cuentabancoBLL.SelectByBanco(idbanco);
            cbxcuenta.DataSource = listacajas;
            cbxcuenta.DisplayMember = "Nrocuenta";
            cbxcuenta.ValueMember = "Id";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            limpiar();
        }

        private void cbxbanco_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void textBox3_KeyPress(object sender, KeyPressEventArgs e)
        {
            UTIIIDADES.UTILIDADES.soloDecimanes(e,txtmonto);
        }

        private void cbxbanco_SelectionChangeCommitted(object sender, EventArgs e)
        {
            int cuentabanco = (int)cbxbanco.SelectedValue;
            cargarCuentaBanco(cuentabanco);
        }
        private void limpiar()
        {
            txtmonto.Text = "";
            txtnrorecibo.Text = "";
            txtobservacion.Text = "";
            dtcfecha.Value = DateTime.Now;
        }
        private void button4_Click(object sender, EventArgs e)
        {
            this.Hide();
        }
    }
}
